/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package station3d;

import station3d.graphics.Renderer;

/**
 * Abstraktní třída pro vytváření herních stavů.
 * @author Martin
 */
public abstract class GameState {

    protected InputManager inputManager;
    protected ResourceManager resourceManager;



    /** Inicializuje herní stav. */
    public void init() throws ResourceError {}

    /** Odstaví herní stav. */
    public void shutdown() {}

    /** Aktualizuje herní stav na základě uplynulého času. */
    public abstract void update(long deltaTime);

    /** Kreslí na obrazovku. */
    public abstract void draw(Renderer r);

    /** Určuje, zda se nemá herní stav ukončit. */
    public abstract boolean isFinished();

    /** Vrací ID následujícího herního stavu. */
    public GameStateFactory.GameStateID getNextStateID() {
        return null;
    }


    public void setInputManager(InputManager inputManager) {
        this.inputManager = inputManager;
    }

    public void setResourceManager(ResourceManager resourceManager) {
        this.resourceManager = resourceManager;
    }

}
